<!DOCTYPE html>
<html lang="zh">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>


    <script>
        // Promise的状态和结果

        console.log('程程：孙熠，你以后上课不交手机我打你屁屁！');
        // new Promise()相当于许下承诺
        let p1 = new Promise((resolve, reject) => {// excutor执行器函数
            // 1.没有任何改变状态的操作，p1为进行中状态，结果为undefined
            console.log('孙熠：姐，我保证以后上课都交手机！');

            // setTimeout(() => {
            //     let num = Math.random();
            //     if (num > 0.5) {
            //         // 2.执行resolve函数，将p1改变为成功状态，结果为123
            //         resolve(123);
            //     } else {
            //         // 3.执行reject函数，将p1改变为失败状态，结果为456
            //         reject(456);
            //     }
            // }, 1000);

            // 4.程序出现报错误时，p1改变为失败状态，结果为报错信息
            // console.lag( 666 );

            // 5.抛出一个错误或一个值，p1改变为失败状态，结果为抛出的值
            // throw 789;
            // throw new Error('出错了');

            // 6.在执行器函数中执行return，p1改变为进行中状态，结果为undefined
            // return false;
            // return [1,2,3];

            // 7.Promsie对象的状态只能改变一次！！！
            // resolve(11);
            // reject(22);

        });
        // 注意：对于一个Promise对象，重点关注它的状态和结果！！！
        // console.log( p1 );// 1.Promise {<pending>:undefined}
        // console.log( p1 );// 2.Promise {<fulfilled>:123}
        // console.log( p1 );// 3.Promise {<rejected>:456}
        // console.log( p1 );// 4.Promise {<rejected>:报错信息}
        // console.log( p1 );// 5.Promise {<rejected>: 抛出的值}
        // console.log( p1 );// 6.Promise {<pending>:undefined}
        console.log(p1);// 7.Promise {<fulfilled>: 11}

    </script>
</body>

</html>